package cn.yes.lshz;

import java.lang.reflect.Field;
import java.lang.reflect.Method;

public class Reflect {
    public static void main(String[] args) throws Exception {
        Class<?> A = Class.forName("cn.yes.lshz.Animal");
        Object o = A.newInstance();

        Field[] fields = A.getDeclaredFields();
//        for (int i = 0;i < fields.length;i++) {
//            Field field = fields[i];
//            field.setAccessible(true);
//            ......
//        }
        for (Field field :fields) {
            field.setAccessible(true);
            // getType :获取某个字段类型，得到的是该类型的类对象
            Class<?> type = field.getType();
            if(type.toString().endsWith("String")) {
                // 说明该字段是字符串
                field.set(o,"Timor");
            }else if(type.toString().endsWith("Integer")){
                // 说明该字段是整数
                field.set(o,2);
            }else if(type.toString().endsWith("Double")){
                //说明该字段是小数
                field.set(o,3.14);
            }
        }
        Method say = A.getDeclaredMethod("say");
        say.invoke(o);
    }
}
